/*
 * ReceivedMessage.java
 *
 * Created on 26 de enero de 2004, 07:01 PM
 */

package guru.mercurio.eps.sSMPP;

import java.io.Serializable;
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;

import org.smpp.pdu.DeliverSM;

/**
 * @author Santiago Ventura Infante
 * 
 * Los objetos de esta clase son la representacion de un mensaje recibido desde 
 * el SMSC. 
 * Solo se pueden instanciar objetos de esta clase, cuando el mensaje recibido es del
 * tipo DELIVER_SM
 */
public class ReceivedMessage implements Serializable{
    
    /** Representa el formato para la fecha */
    DateFormat formatter = DateFormat.getDateTimeInstance(DateFormat.SHORT,DateFormat.MEDIUM,Locale.FRANCE);
    
    /** Representa la fecha */
    Date time = null;
    
    /** Representa el identificador del mensaje dado por smsc */
    private String message_Id = null;
    
    /** Representa el tipo de servicio que origino el mensaje */
    private String service_Type = null;
    
    /** Representa el cuerpo del mensaje */
    private String short_Message = null;
    
    /** Representa la direccion de origen del mensaje */
    private String src_Address = null;
    
    /** Representa la direccion de destino del mensaje */
    private String dest_Address = null;
    
    /** Representa el status en la entrega del mensaje */
    private String delivery_Status = null;
    
    /** Representa la fecha y hora de entrega del mensaje */
    private String delivery_Time = null;
    
    /** Creates a new instance of ReceivedMessage */
    public ReceivedMessage() {
        time = new Date();
    }
    
    /** 
     * Crea una nueva instancia de ReceivedMessage 
     * @param messageId el identificador del mensaje.
     * @param deliverSM el mensaje recibido.
     */
    public ReceivedMessage(String messageId, DeliverSM deliverSM) {
        time = new Date();
        dest_Address = deliverSM.getDestAddr().getAddress();
        this.message_Id = messageId;
        service_Type = deliverSM.getServiceType();
        short_Message = deliverSM.getShortMessage();
        src_Address = deliverSM.getSourceAddr().getAddress();
        delivery_Time = formatter.format(time);
        delivery_Status = String.valueOf(deliverSM.getCommandStatus());                                
    }
    
    /** Devuelve short_Message.
     * @return Valor de la propiedad short_Message.
     *
     */
    public java.lang.String getShort_Message() {
        return short_Message;
    }
    
    /** Asigna el valor a  short_Message.
     * @param short_Message nuevo valor de la propiedad short_Message.
     *
     */
    public void setShort_Message(java.lang.String short_Message) {
        this.short_Message = short_Message;
    }
    
    /** Devuelve src_Address.
     * @return Valor de la propiedad src_Address.
     *
     */
    public java.lang.String getSrc_Address() {
        return src_Address;
    }
    
    /** Asigna el valor a  src_Address.
     * @param src_Address nuevo valor de la propiedad src_Address.
     *
     */
    public void setSrc_Address(java.lang.String src_Address) {
        this.src_Address = src_Address;
    }
    
    /** Devuelve dest_Address.
     * @return Valor de la propiedad dest_Address.
     *
     */
    public java.lang.String getDest_Address() {
        return dest_Address;
    }
    
    /** Asigna el valor a  dest_Address.
     * @param dest_Address nuevo valor de la propiedad dest_Address.
     *
     */
    public void setDest_Address(java.lang.String dest_Address) {
        this.dest_Address = dest_Address;
    }
    
    /** Devuelve delivery_Status.
     * @return Valor de la propiedad delivery_Status.
     *
     */
    public java.lang.String getDelivery_Status() {
        return delivery_Status;
    }
    
    /** Asigna el valor a  delivery_Status.
     * @param delivery_Status nuevo valor de la propiedad delivery_Status.
     *
     */
    public void setDelivery_Status(java.lang.String delivery_Status) {
        this.delivery_Status = delivery_Status;
    }
    
    /** Devuelve delivery_Time.
     * @return Valor de la propiedad delivery_Time.
     *
     */
    public java.lang.String getDelivery_Time() {
        return delivery_Time;
    }
    
    /** Asigna el valor a  delivery_Time.
     * @param delivery_Time nuevo valor de la propiedad delivery_Time.
     *
     */
    public void setDelivery_Time(java.lang.String delivery_Time) {
        this.delivery_Time = delivery_Time;
    }
    
    /** Devuelve message_Id.
     * @return Valor de la propiedad message_Id.
     *
     */
    public java.lang.String getMessage_Id() {
        return message_Id;
    }
    
    /** Asigna el valor a  message_Id.
     * @param message_Id nuevo valor de la propiedad message_Id.
     *
     */
    public void setMessage_Id(java.lang.String message_Id) {
        this.message_Id = message_Id;
    }
    
    /** Devuelve service_Type.
     * @return Valor de la propiedad service_Type.
     *
     */
    public java.lang.String getService_Type() {
        return service_Type;
    }
    
    /** Asigna el valor a  service_Type.
     * @param service_Type nuevo valor de la propiedad service_Type.
     *
     */
    public void setService_Type(java.lang.String service_Type) {
        this.service_Type = service_Type;
    }

    private static final long serialVersionUID = -3972554160251641700L;
    
}
